package restauranti.web.beans;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import restauranti.RN.ClienteRN;
import restauranti.RN.TipoContatoRN;
import restauranti.model.Cliente;
import restauranti.model.InfoContato;
import restauranti.model.TipoContato;

@ManagedBean(name="clienteBean")
@ViewScoped
public class ClienteBean {

	private Cliente cliente = new Cliente();
	private InfoContato infoContato = new InfoContato();
	private List<InfoContato> contatos = new ArrayList<InfoContato>();
	private List<TipoContato> tipoContatos = null;

	public String reinit() {  
		infoContato = new InfoContato();  

		return null;  
	}

	public void addItem() {
		contatos.add(infoContato);
		infoContato = new InfoContato();
	}
	
	public String salvar() {
		cliente.getContatos().setInfoContatos(contatos);
		ClienteRN clienteRN = new ClienteRN();
		clienteRN.salvar(cliente);
		return null;
	}

	public void excluir(){
		ClienteRN clienteRN = new ClienteRN();
		clienteRN.excluir(cliente);
	}

	public void atualizar(){
		ClienteRN clienteRN = new ClienteRN();
		clienteRN.atualizar(cliente);
	}

	public List<Cliente> listar(){
		ClienteRN clienteRN = new ClienteRN();
		return clienteRN.listar(cliente);

	}

	public Cliente carregar(){
		int codigo = cliente.getCodigo();
		ClienteRN clienteRN = new ClienteRN();
		return clienteRN.carregar(codigo);
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public List<TipoContato> getTipoContatos() {
		if(this.tipoContatos == null) {
			TipoContatoRN tipoRN = new TipoContatoRN();
			this.tipoContatos = tipoRN.listar();
		}
		return tipoContatos;
	}

	public List<InfoContato> getContatos() {
		return contatos;
	}

	public void setContatos(List<InfoContato> contatos) {
		this.contatos = contatos;
	}

	public InfoContato getInfoContato() {
		return infoContato;
	}


	public void setInfoContato(InfoContato infoContato) {
		this.infoContato = infoContato;
	}	

}
